In many communications applications, a digital data signal having an input signal rate is encoded prior to transmission through a communications channel and then decoded at a receiver. This coding, i.e., encoding/decoding, improves system performance provided the received signal can be properly decoded into the digital data signal. For proper decoding, the received encoded signal must be sampled using a clock which is synchronized to a clock at the transmitter. Loss of synchronization can arise when the coded signal is transitionless for an extended time period. This can arise when the digital data has a constant signal value for an extended period of time.
In binary systems, a number of techniques have been devised which reduce problems associated with a long sequence or "string" of constant signal values. In one solution, known as alternate mark inversion (AMI), the polarity of logical "1" signals are alternately coded with opposite polarity. While this technique operates satisfactorily, it only avoids a loss of synchronization due to long strings of logical "1" inputs. Synchronization loss can still arise when there is a long string of logical "0s". In another solution, coding techniques, such as Manchester coding and differential Manchester coding are used which ensure a transition in the coded signal level despite an unchanging input signal level. The problem with Manchester coding and its derivatives is that they are bandwidth inefficient because the transitions are provided at twice the input signal rate. In addition, they require rather complex circuitry to implement.
It would therefore be beneficial if a coding technique could be devised which was easy to implement, conserving of bandwidth, and is applicable to the coding of digital signals having two or more signal levels.